package com.yuhuihui.common.annotation.result;

import com.yuhuihui.common.enums.ResultCodeStatusEnum;
import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;

/**
 * controller异常信息替换
 * 注意：使用该注解的返回类型只能为void或com.yuhuihui.common.mvc.ResultJson子类进行异常信息转换,不发生异常则对返回类型无要求。
 * 建议有返回信息，如果是String类型使用com.yuhuihui.common.annotation.result.SuccessInfo；是其他类型则返回com.yuhuihui.common.mvc.ResultJson类型或子类
 *
 * @author yuhh
 * @date 2023-05-25 14:51:18
 * @see Annotation
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@SuccessInfo
public @interface ErrorInfo {

    /**
     * 异常返回信息
     */
    String errorMessage() default "失败";

    /**
     * 异常日志信息
     */
    String errorInfo() default "出现异常";

    /**
     * 异常返回code
     */
    ResultCodeStatusEnum errorResultCode() default ResultCodeStatusEnum.FAIL;

    @AliasFor(annotation = SuccessInfo.class)
    String message() default "成功";
}
